\section{Fremkobling}
\label{moderneregulering-fremkobling}
Som systemet er nu føres referencen ind igennem integralleddet før det føres til systemet og observeren. For at sikre en hurtigere respons fra referencen til output kan der anvendes fremkobling. I fremkobling føres referencen udenom integralleddet og ind til input på system og observeren via en \textbf{N} matrix. Ved at tilføje \textbf{N} til \textbf{r}, kan \textbf{Nr} tilføjes input \textbf{u}, som det fremgår af figur \ref{fig:moderneregulering-feedforwarddiagram}.
\begin{figure}[H] %Blokdiagram af medkobling
\centering
\begin{tikzpicture}[auto, node distance=2cm,>=latex']
% We start by placing the blocks
\coordinate [label = above:$r$](referenceInput);
\coordinate [right = -1.6 cm, right of = referenceInput](reference);
\node [sum, node distance = 1 cm, right of = referenceInput](referenceSum){};
\coordinate [above = -1.7 cm, above of = referenceSum, label = left:\tiny{$-$}];
\coordinate [below = -1.7 cm, below of = referenceSum, label = right:\tiny{$+$}];
\node [block, color=orange, right of = referenceSum, node distance = 1 cm](antiProduct){$\prod$};
\node [block, color=green!60!black, right = 0.5 cm, right of = antiProduct, node distance = 1 cm](feedbackInt){$\int$};
\coordinate [below = 5 cm, below of = referenceSum](belowReferenceSum);
\node [block, color=green!60!black, right of = feedbackInt, node distance = 1.5 cm](feedbackFi){$F_I$};
\node [sum, right of = feedbackFi, node distance = 1 cm](feedbackSum){};
\coordinate [right = -1.5 cm, right of = feedbackSum](sharedU);
\coordinate [right = -1.3 cm, right of = sharedU, label = above:$u$](systemU);
\node [block, right of = systemU, node distance = 1 cm](systemSat){\pgftext{\includegraphics[scale=0.15]{billeder/saturation}}};
\coordinate [right = -1 cm, right of = systemSat, label = above:$u_\text{sat}$](systemUsat);
\coordinate [below = 1.7 cm, below of = sharedU](belowSharedU);
\coordinate [below = 1.7 cm, below of = systemU, label = above:$\hat{u}$](observerU);
\node [block, color = blue, below = 1.7 cm, below of = systemSat](observerSat){\pgftext{\includegraphics[scale=0.15]{billeder/saturation}}};
\coordinate [below = 1.7 cm, below of = systemUsat, label = above:$\hat{u}_\text{sat}$](observerUsat);
\node [sum, below of = observerU, node distance = 1.2 cm](antiSum){};
\coordinate [above = -1.7 cm, above of = antiSum, label = left:\tiny{$+$}];
\coordinate [below = -1.7 cm, below of = antiSum, label = right:\tiny{$-$}];
\coordinate [left = -0.9 cm, left of = antiSum](rightAntiArc);
\coordinate [left = -1.8 cm, left of =rightAntiArc](leftAntiArc);
\node [block, right = 1.5 cm, right of = systemSat, node distance = 1 cm](systemB){$B$};
\node [sum, right of = systemB, node distance = 1 cm](systemSum){};
\node [block, right of = systemSum, node distance = 1 cm](systemInt){$\int$};
\node [block, right of = systemInt, node distance = 1.5 cm](systemC){$C$};
\node [block, below of = systemInt, node distance = 1.2 cm](systemA){$A$};
\node [block, right of = systemA, node distance = 1.5 cm](systemCo){$C_O$};
\coordinate [right = -1 cm, right of = systemC, label = above:$y$](systemY);
\coordinate [right = -1.4 cm, right of = systemY](rightSystemY);
\coordinate [right = -1 cm, right of = systemCo, label = right:$z$](systemZ);
\draw [->] (systemInt) -- node[name = systemX]{$x$} (systemC);
\coordinate [below = -0.6 cm, below of = systemX](belowSystemX);
\node [sum, color=red, below of = systemZ, node distance = 1.3 cm](observerGainSum){};
\node [block, color=red, below of = systemA, node distance = 1.3 cm](observerGainL){$L$};
\node [block, color=blue, below = 2.7 cm, below of = systemB, node distance = 1 cm](observerB){$B$};
\node [sum, color=blue, right of = observerB, node distance = 1 cm](observerSum){};
\node [block, color=blue, right of = observerSum, node distance = 1 cm](observerInt){$\int$};
\node [block, color=blue, right of = observerInt, node distance = 1.5 cm](observerC){$C$};
\node [block, color=blue, below of = observerInt, node distance = 1.2 cm](observerA){$A$};
\coordinate [right = -1 cm, right of = observerC, label = right:$\hat{z}$](observerZ);
\draw [->, color=blue] (observerInt) -- node[name = observerX, color = black]{$\hat{x}$} (observerC);
\coordinate [below = -0.5248 cm, below of = observerX](belowObserverX);
\node [block, color=green!60!black, below of = observerA, node distance = 1.3 cm](feedbackF){$F$};
\node [block, color=orange, left = 0.7 cm, left of = leftAntiArc, node distance = 1 cm](antiSwitch){$Switch$};
\node [block, color=violet, above of = feedbackInt, node distance = 1.2 cm](feedforwardN){$N$};
% We then draw box
\coordinate [above = -1.2 cm, right = -1.2 cm, above of = systemC, right of = systemC](systemBoxRT);
\coordinate [above = -1.2 cm, left = -1.2 cm, above of = systemSat, left of = systemSat](systemBoxLT);
\coordinate [below = -0.15 cm, right = -1.2 cm, below of = systemC, right of = systemC](systemBoxRB);
\coordinate [below = -0.15 cm, left = -1.2 cm, below of = systemSat, left of = systemSat](systemBoxLB);
\draw [dashed, color=cyan] (systemBoxLT) -- (systemBoxRT) -- (systemBoxRB) -- (systemBoxLB) -- (systemBoxLT);
\coordinate [above = -1.8 cm, above of = systemBoxLB, label = right:$\tiny{{\color{cyan}\text{Udvidet system}}}$];
% We then draw lines
\draw [->, color=green!60!black] (referenceInput) -- (referenceSum);
\draw [->, color=green!60!black] (feedbackInt) --node[color = black]{$x_I$} (feedbackFi);
\draw [->, color=green!60!black] (feedbackFi) -- (feedbackSum);
\draw [->, color=green!60!black] (systemY) -- (rightSystemY) |- (belowReferenceSum) -- (referenceSum);
\draw [->, color=green!60!black] (antiProduct) -- (feedbackInt);
\draw [->, color=green!60!black] (referenceSum) -- (antiProduct);
\draw [-] (feedbackSum) -- (systemU);
\draw [->] (systemU) -- (systemSat);
\draw [-] (systemSat) -- (systemUsat);
\draw [->] (systemUsat) -- (systemB);
\draw [->] (systemB) -- (systemSum);
\draw [->] (systemSum) -- (systemInt);
\draw [->] (systemX) |- (belowSystemX) -- (systemA);
\draw [->] (belowSystemX) -- (systemCo);
\draw [->] (systemA) -| (systemSum);
\draw [-] (systemC) -- (systemY);
\draw [-] (systemCo) -- (systemZ);
\draw [->, color=green!60!black] (belowObserverX) |- (feedbackF);
\draw [->, color=green!60!black] (feedbackF) -| (feedbackSum);
\draw [->, color=orange] (observerU) -- (antiSum);
\draw [->, color=orange] (observerUsat) |- (antiSum);
\draw [-, color=orange] (antiSum) -- (rightAntiArc);
\draw [color = orange] (rightAntiArc) arc (0:180:0.1 cm);
\draw [->, color=orange] (leftAntiArc) -- (antiSwitch);
\draw [->, color=orange] (antiSwitch) -| (antiProduct);
\coordinate [left = -1.5 cm, left of = leftAntiArc, label = above:$u_e$](antiUe);
\coordinate [left = -1 cm, left of = antiSwitch, label = above:$u_s$](antiUe);
\draw [->, color=red] (systemZ) -- (observerGainSum);
\draw [->, color=red] (observerZ) -- (observerGainSum);
\coordinate [above = -1.7 cm, above of = observerGainSum, label = right:\tiny{$-$}];
\coordinate [below = -1.7 cm, below of = observerGainSum, label = right:\tiny{$+$}];
\draw [->, color=red] (observerGainSum) -- (observerGainL);
\draw [->, color=red] (observerGainL) -| (observerSum);
\draw [->, color=blue] (observerB) -- (observerSum);
\draw [->, color=blue] (observerSum) -- (observerInt);
\draw [->, color=blue] (observerX) -- (belowObserverX) -- (observerA);
\draw [->, color=blue] (observerA) -| (observerSum);
\draw [-, color=blue] (observerC) -- (observerZ);
\draw [->, color=blue] (sharedU) |- (observerSat);
\draw [->, color=blue] (observerSat) -- (observerB);
\draw [->, color=violet] (reference) |- (feedforwardN);
\draw [->, color=violet] (feedforwardN) -| (feedbackSum);
\end{tikzpicture}
\caption{Systemdiagram med {\color{green!60!black}tilstandstilbagekobling}, {\color{orange}anti-windup}, {\color{blue}observermodel}, {\color{red}observerforstærkning} og {\color{violet}fremkobling}.}
\label{fig:moderneregulering-feedforwarddiagram}
\end{figure}
Dette giver effekten, at der placeres nulpunkter i $\textbf{F}_\textbf{I}/\textbf{N}$ \citep[s.533]{Feedback:book}. Generelt vil disse nulpunkter kunne bruges til at annullere systempoler og forøge båndbredden på systemet. Da dette system har to input laves det både for hastigheder i $x$- og $y$-retningen. \textbf{N} laves på formen angivet i ligning \eqref{eq:medkobling-N}.
\begin{IEEEeqnarray}{rcl}
\label{eq:medkobling-N}
\mathbf{N} = \begin{bmatrix} N_{refx} & 0 \\ 0 & N_{refy}\end{bmatrix}
\end{IEEEeqnarray}
Gøres fremkoblingsforstærkningen større vil man kunne opnå en hurtigere respons, dog vil en for stor forstærkning skabe oversving. Den endelige dimensionering af \textbf{N} foretages under dimensionering, hvor der foretages iterationer indtil en ønsket respons, der overholder kravspecifikationerne, er opnået. For at illustrere virkningen af fremkoblingen vises her steprespons for systemet hvor nulpunkterne er placeret tæt på de langsomste poler, se figur \ref{fig:fremkobling}. Dette er gjort ud fra simuleringen hvor ulineære elementer indgår og det har gjort at nulpunkterne bliver nødt til at placeres lidt højere end polerne bestemt fra det lineære system.
\begin{figure}[H]
\centering
\includegraphics[width=0.7\textwidth]{billeder/moderne/feedforward.pdf}
\caption{Eksempel på feedforward. Horisontal hastighed (Blå), vertikal hastighed (rød). Uden fremkobling (stiplet), med fremkobling (solid).}
\label{fig:fremkobling}
\end{figure}
Det ses dog her at styringen i den vertikale retning går i mætning under indsvingningsforløbet og at stigetiden derfor bliver omtrent det samme. Indtil mætningen er systemet med fremkobling dog stadig hurtigere.